From: Isaku Yamahata Date: Mon, 28 Jul 2008 08:29:09 +0000 (+0900) Subject: [IA64] fix fpswa mapping which was broken by EFI mapping. X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~14168 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success//%22http:/www.example.com/cgi/success/?a=commitdiff_plain;h=f6b4582a331b7f4b496920e9e52bcb6d51006121;p=xen.git [IA64] fix fpswa mapping which was broken by EFI mapping. This patch fixes the following panic reported by Kusamura when xen VMM tries to use fpswa. With the EFI mapping patch, all the firmware call is done in the dedicated address space. fpswa is EFI driver so that the address space must be switched before/after calling fpswa. > (XEN) $$$$$ PANIC in domain 2 (k6=0xf0000004f25e8000): *** xen_handle_domain_access: exception table lookup failed, iip=0xf40000000408cc30, > addr=0xe0000004ffe62050, spinning... > (XEN) d 0xf000000004138080 domid 2 > (XEN) vcpu 0xf0000004f25e8000 vcpu 0 > (XEN) > (XEN) CPU 5 > (XEN) psr : 0000121008226038 ifs : 8000000000000716 ip : [] > (XEN) ip is at handle_fpu_swa+0x3c1/0x510 ... Signed-off-by: Isaku Yamahata --- diff --git a/xen/arch/ia64/xen/faults.c b/xen/arch/ia64/xen/faults.c index aab95ed6d0..1798c32e67 100644 --- a/xen/arch/ia64/xen/faults.c +++ b/xen/arch/ia64/xen/faults.c @@ -274,6 +274,7 @@ fp_emulate(int fp_fault, void *bundle, unsigned long *ipsr, { fp_state_t fp_state; fpswa_ret_t ret; + XEN_EFI_RR_DECLARE(rr6, rr7); if (!fpswa_interface) return (fpswa_ret_t) {-1, 0, 0, 0}; @@ -299,8 +300,10 @@ fp_emulate(int fp_fault, void *bundle, unsigned long *ipsr, * unsigned long *pifs, * void *fp_state); */ + XEN_EFI_RR_ENTER(rr6, rr7); ret = (*fpswa_interface->fpswa) (fp_fault, bundle, ipsr, fpsr, isr, pr, ifs, &fp_state); + XEN_EFI_RR_LEAVE(rr6, rr7); return ret; }